Termination Proof Script

Consider the TRS R consisting of the rewrite rules
1:    active(from(X))  → mark(cons(X,from(s(X))))
2:    active(first(0,Z))  → mark(nil)
3:    active(first(s(X),cons(Y,Z)))  → mark(cons(Y,first(X,Z)))
4:    active(sel(0,cons(X,Z)))  → mark(X)
5:    active(sel(s(X),cons(Y,Z)))  → mark(sel(X,Z))
6:    active(from(X))  → from(active(X))
7:    active(cons(X1,X2))  → cons(active(X1),X2)
8:    active(s(X))  → s(active(X))
9:    active(first(X1,X2))  → first(active(X1),X2)
10:    active(first(X1,X2))  → first(X1,active(X2))
11:    active(sel(X1,X2))  → sel(active(X1),X2)
12:    active(sel(X1,X2))  → sel(X1,active(X2))
13:    from(mark(X))  → mark(from(X))
14:    cons(mark(X1),X2)  → mark(cons(X1,X2))
15:    s(mark(X))  → mark(s(X))
16:    first(mark(X1),X2)  → mark(first(X1,X2))
17:    first(X1,mark(X2))  → mark(first(X1,X2))
18:    sel(mark(X1),X2)  → mark(sel(X1,X2))
19:    sel(X1,mark(X2))  → mark(sel(X1,X2))
20:    proper(from(X))  → from(proper(X))
21:    proper(cons(X1,X2))  → cons(proper(X1),proper(X2))
22:    proper(s(X))  → s(proper(X))
23:    proper(first(X1,X2))  → first(proper(X1),proper(X2))
24:    proper(0)  → ok(0)
25:    proper(nil)  → ok(nil)
26:    proper(sel(X1,X2))  → sel(proper(X1),proper(X2))
27:    from(ok(X))  → ok(from(X))
28:    cons(ok(X1),ok(X2))  → ok(cons(X1,X2))
29:    s(ok(X))  → ok(s(X))
30:    first(ok(X1),ok(X2))  → ok(first(X1,X2))
31:    sel(ok(X1),ok(X2))  → ok(sel(X1,X2))
32:    top(mark(X))  → top(proper(X))
33:    top(ok(X))  → top(active(X))
There are 49 dependency pairs:
34:    ACTIVE(from(X))  → CONS(X,from(s(X)))
35:    ACTIVE(from(X))  → FROM(s(X))
36:    ACTIVE(from(X))  → S(X)
37:    ACTIVE(first(s(X),cons(Y,Z)))  → CONS(Y,first(X,Z))
38:    ACTIVE(first(s(X),cons(Y,Z)))  → FIRST(X,Z)
39:    ACTIVE(sel(s(X),cons(Y,Z)))  → SEL(X,Z)
40:    ACTIVE(from(X))  → FROM(active(X))
41:    ACTIVE(from(X))  → ACTIVE(X)
42:    ACTIVE(cons(X1,X2))  → CONS(active(X1),X2)
43:    ACTIVE(cons(X1,X2))  → ACTIVE(X1)
44:    ACTIVE(s(X))  → S(active(X))
45:    ACTIVE(s(X))  → ACTIVE(X)
46:    ACTIVE(first(X1,X2))  → FIRST(active(X1),X2)
47:    ACTIVE(first(X1,X2))  → ACTIVE(X1)
48:    ACTIVE(first(X1,X2))  → FIRST(X1,active(X2))
49:    ACTIVE(first(X1,X2))  → ACTIVE(X2)
50:    ACTIVE(sel(X1,X2))  → SEL(active(X1),X2)
51:    ACTIVE(sel(X1,X2))  → ACTIVE(X1)
52:    ACTIVE(sel(X1,X2))  → SEL(X1,active(X2))
53:    ACTIVE(sel(X1,X2))  → ACTIVE(X2)
54:    FROM(mark(X))  → FROM(X)
55:    CONS(mark(X1),X2)  → CONS(X1,X2)
56:    S(mark(X))  → S(X)
57:    FIRST(mark(X1),X2)  → FIRST(X1,X2)
58:    FIRST(X1,mark(X2))  → FIRST(X1,X2)
59:    SEL(mark(X1),X2)  → SEL(X1,X2)
60:    SEL(X1,mark(X2))  → SEL(X1,X2)
61:    PROPER(from(X))  → FROM(proper(X))
62:    PROPER(from(X))  → PROPER(X)
63:    PROPER(cons(X1,X2))  → CONS(proper(X1),proper(X2))
64:    PROPER(cons(X1,X2))  → PROPER(X1)
65:    PROPER(cons(X1,X2))  → PROPER(X2)
66:    PROPER(s(X))  → S(proper(X))
67:    PROPER(s(X))  → PROPER(X)
68:    PROPER(first(X1,X2))  → FIRST(proper(X1),proper(X2))
69:    PROPER(first(X1,X2))  → PROPER(X1)
70:    PROPER(first(X1,X2))  → PROPER(X2)
71:    PROPER(sel(X1,X2))  → SEL(proper(X1),proper(X2))
72:    PROPER(sel(X1,X2))  → PROPER(X1)
73:    PROPER(sel(X1,X2))  → PROPER(X2)
74:    FROM(ok(X))  → FROM(X)
75:    CONS(ok(X1),ok(X2))  → CONS(X1,X2)
76:    S(ok(X))  → S(X)
77:    FIRST(ok(X1),ok(X2))  → FIRST(X1,X2)
78:    SEL(ok(X1),ok(X2))  → SEL(X1,X2)
79:    TOP(mark(X))  → TOP(proper(X))
80:    TOP(mark(X))  → PROPER(X)
81:    TOP(ok(X))  → TOP(active(X))
82:    TOP(ok(X))  → ACTIVE(X)
The approximated dependency graph contains 8 SCCs: {55,75}, {57,58,77}, {54,74}, {56,76}, {59,60,78}, {62,64,65,67,69,70,72,73}, {41,43,45,47,49,51,53} and {79,81}.
Tyrolean Termination Tool  (114.56 seconds)   ---  May 3, 2006